// ==UserScript==
// @name        upload.cc简易控制脚本
// @namespace   https://greasyfork.org/users/14059
// @description upload.cc简易控制脚本,点击菜单弹出对话框,输入输出保存的图片记录,然后自己手动管理
// @include     https://upload.cc/*
// @author      setycyas
// @version     1.00
// @grant       GM_registerMenuCommand
// @run-at      document-end
// @license     MIT
// ==/UserScript==

(function(){
  /* 脚本正式开始 */

  'use strict';
  console.log("upload.cc简易控制脚本运行开始");

  /****************************************
  ######## version 1.00 @2019-05-13 #######
  ######## 脚本正式开始 ###################
  ****************************************/
  
  /* Functions */
  // 加入bootstrap组件
  function addBootstrap(){
    var bootstrapLink = '<link crossorigin="anonymous" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" href="https://lib.baomitu.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">';
    var bootstrapScript = '<script crossorigin="anonymous" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" src="https://lib.baomitu.com/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>';
    $(bootstrapLink).appendTo($('head'));
    $(bootstrapScript).appendTo($('head'));
  }
  
  // 加入模拟控制台与相关指令
  function addModal(){
    /* 开始加入模拟框div */
    var modalHtml = '<div id="modal" class = "modal fade"><div class="modal-content"><h4>在这里读写图片记录(json格式):</h4><br>';
    modalHtml += '<textarea id="modal-text" style="width:1000px;height:500px;">这里读写记录</textarea><br><button id="getRecord" class="btn btn-sm btn-primary">获取记录</button>';
    modalHtml += '<button id="setRecord" class="btn btn-sm btn-primary">设定记录</button></div></div>';
    $(modalHtml).appendTo($('body'));
    // 设定css
    $('.modal-content').css({
      'margin':'80px',
      'padding-left':'100px',
      'padding-top':'30px',
      'text-align':'left',
      'background-color':'#e8e8e8'
    });
    $('#modal .btn').css({
      'width':'150px',
      'text-align':'center',
      'margin':'5px'
    });
    /* 设定按钮行为 */
    // 设定获取记录按钮的行为
    $('#getRecord').click(function(){
      $('#modal-text').val(window.localStorage['user_upload_history']);
    });
    // 设定读取记录按钮的行为,读取后替换原来的记录,需要谨慎
    $('#setRecord').click(function(){
      var res = confirm("确定替换记录吗?这是个不可取消的操作,未保存原记录时请小心使用.");
      if(res == true){
        var text = $('#modal-text').val();
        try {
          var obj = JSON.parse(text);
          window.localStorage.setItem('user_upload_history',text);
          window.location.href = 'https://upload.cc/';
        } catch(e) {
          alert('输入有错误,不是json字符串');
        }   
      }
    });
  }

  /* Main Script */
  // 加入bootstrap库与相关模拟框
  addBootstrap();
  addModal();
  $('div#modal').addClass('hide');
  $('div#modal .modal-backdrop').addClass('hide');
  // 注册模拟框开关.由于中途加入的bootstrap有些问题,用官方的方法设定模拟框显隐有问题.只能测试用手动方法了:
  // 关键是除了顶层的modal外,还有.modal-backdrop这个自动生成的,要把两个层的'hide','show'class切换,还要手动切换display状态
  GM_registerMenuCommand('模拟框开关',function(){
    var modal = $('div#modal');
    var modalBackdrop = $('div#modal .modal-backdrop');
    var modalClass = modal.attr('class');
    // 根据class,手动判断隐藏还是显示
    if(modalClass.indexOf('hide') > 0) {
      modal.removeClass('hide');
      modal.addClass('show');
      modal.css({'display':'block'});
      modalBackdrop.removeClass('hide');
      modalBackdrop.addClass('show');
      modalBackdrop.css({'display':'block'});
    }else{
      modal.removeClass('show');
      modal.addClass('hide');
      modal.css({'display':'none'});
      modalBackdrop.removeClass('show');
      modalBackdrop.addClass('hide');
      modalBackdrop.css({'display':'none'});
    }
  });

/* 脚本结束 */
})();
